# ==================================
#
#  Code for replicating:
# "Positioning Under Alternative Electoral Systems: Evidence From Japanese Candidate Election Manifestos"
#  Amy Catalinac, NYU
#
# ==================================


# ==================================
# Plotting the distribution of candidate positions in each election
# (Online Appendix Figure 3)

load("covars_ideal_points.Rdata") # NB: saved as ideal, ideal points are "sep_theta"
# see "running_wordfish.R" for information on this file

ideal.1986 <- ideal[ideal$year==1986,]
ideal.1990 <- ideal[ideal$year==1990,]
ideal.1993 <- ideal[ideal$year==1993,]
ideal.1996 <- ideal[ideal$year==1996,]
ideal.2000 <- ideal[ideal$year==2000,]
ideal.2003 <- ideal[ideal$year==2003,]
ideal.2005 <- ideal[ideal$year==2005,]
ideal.2009 <- ideal[ideal$year==2009,]

par(mfrow = c(2, 4), mar = c(4,4,2,1), tcl = -0.25, mgp = c(1.75, 0.6, 0),
    font.main = 1, cex.main = 2)

hist(ideal.1986$sep_theta, main="1986 (n=800)", xlab="",
     xlim=c(-4, 5),  xaxt="n", cex.lab=1.5)
axis(1, at=c(-4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5), 
     cex.axis=1)
abline(v=median(ideal.1986$sep_theta), lty=3, col="blue", lwd=3)

hist(ideal.1990$sep_theta, main="1990 (n=854)", xlab="",
     xlim=c(-4, 5),  xaxt="n", cex.lab=1.5)
axis(1, at=c(-4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5), 
     cex.axis=1)
abline(v=median(ideal.1990$sep_theta), lty=3, col="blue", lwd=3)

hist(ideal.1993$sep_theta, main="1993 (n=866)", xlab="",
     xlim=c(-4, 5),  xaxt="n", cex.lab=1.5)
axis(1, at=c(-4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5), 
     cex.axis=1)
abline(v=median(ideal.1993$sep_theta), lty=3, col="blue", lwd=3)

hist(ideal.1996$sep_theta, main="1996 (n=1,126)", xlab="",
     xlim=c(-4, 5),  xaxt="n", cex.lab=1.5)
axis(1, at=c(-4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5), 
     cex.axis=1)
abline(v=median(ideal.1996$sep_theta), lty=3, col="blue", lwd=3)

hist(ideal.2000$sep_theta, main="2000 (n=1,070)", xlab="",
     xlim=c(-4, 5),  xaxt="n", cex.lab=1.5)
axis(1, at=c(-4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5), 
     cex.axis=1)
abline(v=median(ideal.2000$sep_theta), lty=3, col="blue", lwd=3)

hist(ideal.2003$sep_theta, main="2003 (n=994)", xlab="",
     xlim=c(-4, 5),  xaxt="n", cex.lab=1.5)
axis(1, at=c(-4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5), 
     cex.axis=1)
abline(v=median(ideal.2003$sep_theta), lty=3, col="blue", lwd=3)

hist(ideal.2005$sep_theta, main="2005 (n=966)", xlab="",
     xlim=c(-4, 5),  xaxt="n", cex.lab=1.5)
axis(1, at=c(-4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5), 
     cex.axis=1)
abline(v=median(ideal.2005$sep_theta), lty=3, col="blue", lwd=3)

hist(ideal.2009$sep_theta, main="2009 (n=821)", xlab="",
     xlim=c(-4, 5),  xaxt="n", cex.lab=1.5)
axis(1, at=c(-4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5), 
     cex.axis=1)
abline(v=median(ideal.2009$sep_theta), lty=3, col="blue", lwd=3)

rm(list=ls())









# ==================================
# Distribution of candidate positions by party-year
# (Paper Figure 1)

load("covars_ideal_points.Rdata")

ideal.1986 <- ideal[ideal$year==1986,]
ideal.1990 <- ideal[ideal$year==1990,]
ideal.1993 <- ideal[ideal$year==1993,]
ideal.1996 <- ideal[ideal$year==1996,]
ideal.2000 <- ideal[ideal$year==2000,]
ideal.2003 <- ideal[ideal$year==2003,]
ideal.2005 <- ideal[ideal$year==2005,]
ideal.2009 <- ideal[ideal$year==2009,]

# 1986

pos.by.pty.1986 <- as.data.frame(as.matrix(by(ideal.1986, ideal.1986$pty, function(x) mean(x[,5]))))
se <- function(x) sqrt(var(x)/length(x))
se.by.pty.1986 <- by(ideal.1986, ideal.1986$pty, function(x) se(x[,5]))

pos.by.pty.1986.2 <- cbind(as.vector(pos.by.pty.1986), as.vector(se.by.pty.1986), rownames(pos.by.pty.1986)) ## attachs rownames on as another column.
colnames(pos.by.pty.1986.2) <- c("mean.pos", "se.pos", "pty")
pos.by.pty.1986.2
pos.by.pty.1986.3 <- pos.by.pty.1986.2[order(pos.by.pty.1986.2$mean.pos),]
pos.by.pty.1986.3

pos.by.pty.1986.3$ptyname <- rep(NA, nrow(pos.by.pty.1986))

pos.by.pty.1986.3[pos.by.pty.1986.3$pty==1,]$ptyname <- "LDP"
pos.by.pty.1986.3[pos.by.pty.1986.3$pty==2,]$ptyname <- "JSP" 
pos.by.pty.1986.3[pos.by.pty.1986.3$pty==3,]$ptyname <- "Komeito" 
pos.by.pty.1986.3[pos.by.pty.1986.3$pty==4,]$ptyname <- "DSP" 
pos.by.pty.1986.3[pos.by.pty.1986.3$pty==5,]$ptyname <- "JCP"
pos.by.pty.1986.3[pos.by.pty.1986.3$pty==8,]$ptyname <- "SDL"
pos.by.pty.1986.3[pos.by.pty.1986.3$pty==6,]$ptyname <- "NLC"

pos.by.pty.1986.3
range(pos.by.pty.1986.3$mean.pos)

par(mfrow = c(4, 2), mar = c(3,4,2,1), tcl = -0.25, mgp = c(1.75, 0.6, 0),
    font.main = 1, cex.main = 2)

dotchart(pos.by.pty.1986.3[pos.by.pty.1986.3$pty==1|
                             pos.by.pty.1986.3$pty==2|
                             pos.by.pty.1986.3$pty==3|
                             pos.by.pty.1986.3$pty==4|
                             pos.by.pty.1986.3$pty==5|
                             pos.by.pty.1986.3$pty==6|
                             pos.by.pty.1986.3$pty==8,]$mean.pos, 
         labels=pos.by.pty.1986.3[pos.by.pty.1986.3$pty==1|
                                    pos.by.pty.1986.3$pty==2|
                                    pos.by.pty.1986.3$pty==3|
                                    pos.by.pty.1986.3$pty==4|
                                    pos.by.pty.1986.3$pty==5|
                                    pos.by.pty.1986.3$pty==6|
                                    pos.by.pty.1986.3$pty==8,]$ptyname, 
         pch=20,
         xlab="1986 Party Positions (n=724)", 
         xlim=c(-2.8, 1.7),
         cex=1)

ldp.upp <- pos.by.pty.1986.3[pos.by.pty.1986.3$pty==1,]$mean.pos + (1.96*pos.by.pty.1986.3[pos.by.pty.1986.3$pty==1,]$se.pos)
ldp.low <- pos.by.pty.1986.3[pos.by.pty.1986.3$pty==1,]$mean.pos - (1.96*pos.by.pty.1986.3[pos.by.pty.1986.3$pty==1,]$se.pos)

conf.ldp <- c(ldp.upp, ldp.low)
conf.ldp

jsp.upp <- pos.by.pty.1986.3[pos.by.pty.1986.3$pty==2,]$mean.pos + (1.96*pos.by.pty.1986.3[pos.by.pty.1986.3$pty==2,]$se.pos)
jsp.low <- pos.by.pty.1986.3[pos.by.pty.1986.3$pty==2,]$mean.pos - (1.96*pos.by.pty.1986.3[pos.by.pty.1986.3$pty==2,]$se.pos)

conf.jsp <- c(jsp.upp, jsp.low)
conf.jsp

kom.upp <- pos.by.pty.1986.3[pos.by.pty.1986.3$pty==3,]$mean.pos + (1.96*pos.by.pty.1986.3[pos.by.pty.1986.3$pty==3,]$se.pos)
kom.low <- pos.by.pty.1986.3[pos.by.pty.1986.3$pty==3,]$mean.pos - (1.96*pos.by.pty.1986.3[pos.by.pty.1986.3$pty==3,]$se.pos)

conf.kom <- c(kom.upp, kom.low)
conf.kom

dsp.upp <- pos.by.pty.1986.3[pos.by.pty.1986.3$pty==4,]$mean.pos + (1.96*pos.by.pty.1986.3[pos.by.pty.1986.3$pty==4,]$se.pos)
dsp.low <- pos.by.pty.1986.3[pos.by.pty.1986.3$pty==4,]$mean.pos - (1.96*pos.by.pty.1986.3[pos.by.pty.1986.3$pty==4,]$se.pos)

conf.dsp <- c(dsp.upp, dsp.low)
conf.dsp

jcp.upp <- pos.by.pty.1986.3[pos.by.pty.1986.3$pty==5,]$mean.pos + (1.96*pos.by.pty.1986.3[pos.by.pty.1986.3$pty==5,]$se.pos)
jcp.low <- pos.by.pty.1986.3[pos.by.pty.1986.3$pty==5,]$mean.pos - (1.96*pos.by.pty.1986.3[pos.by.pty.1986.3$pty==5,]$se.pos)

conf.jcp <- c(jcp.upp, jcp.low)
conf.jcp

nlc.upp <- pos.by.pty.1986.3[pos.by.pty.1986.3$pty==6,]$mean.pos + (1.96*pos.by.pty.1986.3[pos.by.pty.1986.3$pty==6,]$se.pos)
nlc.low <- pos.by.pty.1986.3[pos.by.pty.1986.3$pty==6,]$mean.pos - (1.96*pos.by.pty.1986.3[pos.by.pty.1986.3$pty==6,]$se.pos)

conf.nlc <- c(nlc.upp, nlc.low)
conf.nlc

sdl.upp <- pos.by.pty.1986.3[pos.by.pty.1986.3$pty==8,]$mean.pos + (1.96*pos.by.pty.1986.3[pos.by.pty.1986.3$pty==8,]$se.pos)
sdl.low <- pos.by.pty.1986.3[pos.by.pty.1986.3$pty==8,]$mean.pos - (1.96*pos.by.pty.1986.3[pos.by.pty.1986.3$pty==8,]$se.pos)

conf.sdl <- c(sdl.upp, sdl.low)
conf.sdl

lines(x=c(nlc.upp, nlc.low), y=c(7,7), lwd=2)
lines(x=c(sdl.upp, sdl.low), y=c(6,6), lwd=2)
lines(x=c(ldp.upp, ldp.low), y=c(5,5), lwd=2)
lines(x=c(dsp.upp, dsp.low), y=c(4,4), lwd=2)
lines(x=c(jsp.upp, jsp.low), y=c(3,3), lwd=2)
lines(x=c(kom.upp, kom.low), y=c(2,2), lwd=2)
lines(x=c(jcp.upp, jcp.low), y=c(1,1), lwd=2)

# how many candidates in this figure?
ideal.1986.only <- ideal[ideal$year==1986 & (ideal$pty==1|
                                             ideal$pty==2|
                                             ideal$pty==3|
                                             ideal$pty==4|
                                             ideal$pty==5|
                                             ideal$pty==6|
                                            ideal$pty==8)
                                ,]
dim(ideal.1986.only)

# 1990

pos.by.pty.1990 <- as.data.frame(as.matrix(by(ideal.1990, ideal.1990$pty, function(x) mean(x[,5]))))
se <- function(x) sqrt(var(x)/length(x))
se.by.pty.1990 <- by(ideal.1990, ideal.1990$pty, function(x) se(x[,5]))

pos.by.pty.1990.2 <- cbind(as.vector(pos.by.pty.1990), as.vector(se.by.pty.1990), rownames(pos.by.pty.1990)) ## attachs rownames on as another column.
colnames(pos.by.pty.1990.2) <- c("mean.pos", "se.pos", "pty")
pos.by.pty.1990.2
pos.by.pty.1990.3 <- pos.by.pty.1990.2[order(pos.by.pty.1990.2$mean.pos),]
pos.by.pty.1990.3

pos.by.pty.1990.3$ptyname <- rep(NA, nrow(pos.by.pty.1990))

pos.by.pty.1990.3[pos.by.pty.1990.3$pty==1,]$ptyname <- "LDP"
pos.by.pty.1990.3[pos.by.pty.1990.3$pty==2,]$ptyname <- "JSP" 
pos.by.pty.1990.3[pos.by.pty.1990.3$pty==3,]$ptyname <- "Komeito" 
pos.by.pty.1990.3[pos.by.pty.1990.3$pty==4,]$ptyname <- "DSP" 
pos.by.pty.1990.3[pos.by.pty.1990.3$pty==5,]$ptyname <- "JCP"
pos.by.pty.1990.3[pos.by.pty.1990.3$pty==8,]$ptyname <- "SDL"
pos.by.pty.1990.3[pos.by.pty.1990.3$pty==24,]$ptyname <- "Progressives"

pos.by.pty.1990.3

dotchart(pos.by.pty.1990.3[pos.by.pty.1990.3$pty==1|
                             pos.by.pty.1990.3$pty==2|
                             pos.by.pty.1990.3$pty==3|
                             pos.by.pty.1990.3$pty==4|
                             pos.by.pty.1990.3$pty==5|
                             pos.by.pty.1990.3$pty==8|
                             pos.by.pty.1990.3$pty==24,]$mean.pos, 
         labels=pos.by.pty.1990.3[pos.by.pty.1990.3$pty==1|
                                    pos.by.pty.1990.3$pty==2|
                                    pos.by.pty.1990.3$pty==3|
                                    pos.by.pty.1990.3$pty==4|
                                    pos.by.pty.1990.3$pty==5|
                                    pos.by.pty.1990.3$pty==8|
                                    pos.by.pty.1990.3$pty==24,]$ptyname, 
         pch=20,
         xlab="1990 Party Positions (n=730)", xlim=c(-2, 2.55), cex=1)
ldp.upp <- pos.by.pty.1990.3[pos.by.pty.1990.3$pty==1,]$mean.pos + (1.96*pos.by.pty.1990.3[pos.by.pty.1990.3$pty==1,]$se.pos)
ldp.low <- pos.by.pty.1990.3[pos.by.pty.1990.3$pty==1,]$mean.pos - (1.96*pos.by.pty.1990.3[pos.by.pty.1990.3$pty==1,]$se.pos)

conf.ldp <- c(ldp.upp, ldp.low)
conf.ldp

jsp.upp <- pos.by.pty.1990.3[pos.by.pty.1990.3$pty==2,]$mean.pos + (1.96*pos.by.pty.1990.3[pos.by.pty.1990.3$pty==2,]$se.pos)
jsp.low <- pos.by.pty.1990.3[pos.by.pty.1990.3$pty==2,]$mean.pos - (1.96*pos.by.pty.1990.3[pos.by.pty.1990.3$pty==2,]$se.pos)

conf.jsp <- c(jsp.upp, jsp.low)
conf.jsp

kom.upp <- pos.by.pty.1990.3[pos.by.pty.1990.3$pty==3,]$mean.pos + (1.96*pos.by.pty.1990.3[pos.by.pty.1990.3$pty==3,]$se.pos)
kom.low <- pos.by.pty.1990.3[pos.by.pty.1990.3$pty==3,]$mean.pos - (1.96*pos.by.pty.1990.3[pos.by.pty.1990.3$pty==3,]$se.pos)

conf.kom <- c(kom.upp, kom.low)
conf.kom

dsp.upp <- pos.by.pty.1990.3[pos.by.pty.1990.3$pty==4,]$mean.pos + (1.96*pos.by.pty.1990.3[pos.by.pty.1990.3$pty==4,]$se.pos)
dsp.low <- pos.by.pty.1990.3[pos.by.pty.1990.3$pty==4,]$mean.pos - (1.96*pos.by.pty.1990.3[pos.by.pty.1990.3$pty==4,]$se.pos)

conf.dsp <- c(dsp.upp, dsp.low)
conf.dsp

jcp.upp <- pos.by.pty.1990.3[pos.by.pty.1990.3$pty==5,]$mean.pos + (1.96*pos.by.pty.1990.3[pos.by.pty.1990.3$pty==5,]$se.pos)
jcp.low <- pos.by.pty.1990.3[pos.by.pty.1990.3$pty==5,]$mean.pos - (1.96*pos.by.pty.1990.3[pos.by.pty.1990.3$pty==5,]$se.pos)

conf.jcp <- c(jcp.upp, jcp.low)
conf.jcp

sdl.upp <- pos.by.pty.1990.3[pos.by.pty.1990.3$pty==8,]$mean.pos + (1.96*pos.by.pty.1990.3[pos.by.pty.1990.3$pty==8,]$se.pos)
sdl.low <- pos.by.pty.1990.3[pos.by.pty.1990.3$pty==8,]$mean.pos - (1.96*pos.by.pty.1990.3[pos.by.pty.1990.3$pty==8,]$se.pos)

conf.sdl <- c(sdl.upp, sdl.low)
conf.sdl

pro.upp <- pos.by.pty.1990.3[pos.by.pty.1990.3$pty==24,]$mean.pos + (1.96*pos.by.pty.1990.3[pos.by.pty.1990.3$pty==24,]$se.pos)
pro.low <- pos.by.pty.1990.3[pos.by.pty.1990.3$pty==24,]$mean.pos - (1.96*pos.by.pty.1990.3[pos.by.pty.1990.3$pty==24,]$se.pos)

conf.pro <- c(pro.upp, pro.low)
conf.pro
lines(x=c(pro.upp, pro.low), y=c(7,7), lwd=2)
lines(x=c(kom.upp, kom.low), y=c(6,6), lwd=2)
lines(x=c(ldp.upp, ldp.low), y=c(5,5), lwd=2)
lines(x=c(sdl.upp, sdl.low), y=c(4,4), lwd=2)
lines(x=c(dsp.upp, dsp.low), y=c(3,3), lwd=2)
lines(x=c(jsp.upp, jsp.low), y=c(2,2), lwd=2)
lines(x=c(jcp.upp, jcp.low), y=c(1,1), lwd=2)

ideal.1990.only <- ideal[ideal$year==1990 & (ideal$pty==1|
                                                             ideal$pty==2|
                                                             ideal$pty==3|
                                                             ideal$pty==4|
                                                             ideal$pty==5|
                                                             ideal$pty==8|
                                                             ideal$pty==24)
                                ,]

dim(ideal.1990.only) 

# 1993

pos.by.pty.1993 <- as.data.frame(as.matrix(by(ideal.1993, ideal.1993$pty, function(x) mean(x[,5]))))
se <- function(x) sqrt(var(x)/length(x))
se.by.pty.1993 <- by(ideal.1993, ideal.1993$pty, function(x) se(x[,5]))

pos.by.pty.1993.2 <- cbind(as.vector(pos.by.pty.1993), as.vector(se.by.pty.1993), rownames(pos.by.pty.1993)) ## attachs rownames on as another column.
colnames(pos.by.pty.1993.2) <- c("mean.pos", "se.pos", "pty")
pos.by.pty.1993.2
pos.by.pty.1993.3 <- pos.by.pty.1993.2[order(pos.by.pty.1993.2$mean.pos),]
pos.by.pty.1993.3

pos.by.pty.1993.3$ptyname <- rep(NA, nrow(pos.by.pty.1993))

pos.by.pty.1993.3[pos.by.pty.1993.3$pty==1,]$ptyname <- "LDP"
pos.by.pty.1993.3[pos.by.pty.1993.3$pty==2,]$ptyname <- "JSP" 
pos.by.pty.1993.3[pos.by.pty.1993.3$pty==3,]$ptyname <- "Komeito" 
pos.by.pty.1993.3[pos.by.pty.1993.3$pty==4,]$ptyname <- "DSP" 
pos.by.pty.1993.3[pos.by.pty.1993.3$pty==5,]$ptyname <- "JCP"
pos.by.pty.1993.3[pos.by.pty.1993.3$pty==6,]$ptyname <- "Shinsei"
pos.by.pty.1993.3[pos.by.pty.1993.3$pty==7,]$ptyname <- "Sakigake"
pos.by.pty.1993.3[pos.by.pty.1993.3$pty==9,]$ptyname <- "JNP"

pos.by.pty.1993.3

dotchart(pos.by.pty.1993.3[pos.by.pty.1993.3$pty==1|
                             pos.by.pty.1993.3$pty==2|
                             pos.by.pty.1993.3$pty==3|
                             pos.by.pty.1993.3$pty==4|
                             pos.by.pty.1993.3$pty==5|
                             pos.by.pty.1993.3$pty==6|
                             pos.by.pty.1993.3$pty==7|
                             pos.by.pty.1993.3$pty==9,]$mean.pos, 
         labels=pos.by.pty.1993.3[pos.by.pty.1993.3$pty==1|
                                    pos.by.pty.1993.3$pty==2|
                                    pos.by.pty.1993.3$pty==3|
                                    pos.by.pty.1993.3$pty==4|
                                    pos.by.pty.1993.3$pty==5|
                                    pos.by.pty.1993.3$pty==6|
                                    pos.by.pty.1993.3$pty==7|
                                    pos.by.pty.1993.3$pty==9,]$ptyname, 
         pch=20,
         xlab="1993 Party Positions (n=780)", xlim=c(-2.6, 1.3), cex=1)

ldp.upp <- pos.by.pty.1993.3[pos.by.pty.1993.3$pty==1,]$mean.pos + (1.96*pos.by.pty.1993.3[pos.by.pty.1993.3$pty==1,]$se.pos)
ldp.low <- pos.by.pty.1993.3[pos.by.pty.1993.3$pty==1,]$mean.pos - (1.96*pos.by.pty.1993.3[pos.by.pty.1993.3$pty==1,]$se.pos)

conf.ldp <- c(ldp.upp, ldp.low)
conf.ldp

jsp.upp <- pos.by.pty.1993.3[pos.by.pty.1993.3$pty==2,]$mean.pos + (1.96*pos.by.pty.1993.3[pos.by.pty.1993.3$pty==2,]$se.pos)
jsp.low <- pos.by.pty.1993.3[pos.by.pty.1993.3$pty==2,]$mean.pos - (1.96*pos.by.pty.1993.3[pos.by.pty.1993.3$pty==2,]$se.pos)

conf.jsp <- c(jsp.upp, jsp.low)
conf.jsp

kom.upp <- pos.by.pty.1993.3[pos.by.pty.1993.3$pty==3,]$mean.pos + (1.96*pos.by.pty.1993.3[pos.by.pty.1993.3$pty==3,]$se.pos)
kom.low <- pos.by.pty.1993.3[pos.by.pty.1993.3$pty==3,]$mean.pos - (1.96*pos.by.pty.1993.3[pos.by.pty.1993.3$pty==3,]$se.pos)

conf.kom <- c(kom.upp, kom.low)
conf.kom

dsp.upp <- pos.by.pty.1993.3[pos.by.pty.1993.3$pty==4,]$mean.pos + (1.96*pos.by.pty.1993.3[pos.by.pty.1993.3$pty==4,]$se.pos)
dsp.low <- pos.by.pty.1993.3[pos.by.pty.1993.3$pty==4,]$mean.pos - (1.96*pos.by.pty.1993.3[pos.by.pty.1993.3$pty==4,]$se.pos)

conf.dsp <- c(dsp.upp, dsp.low)
conf.dsp

jcp.upp <- pos.by.pty.1993.3[pos.by.pty.1993.3$pty==5,]$mean.pos + (1.96*pos.by.pty.1993.3[pos.by.pty.1993.3$pty==5,]$se.pos)
jcp.low <- pos.by.pty.1993.3[pos.by.pty.1993.3$pty==5,]$mean.pos - (1.96*pos.by.pty.1993.3[pos.by.pty.1993.3$pty==5,]$se.pos)

conf.jcp <- c(jcp.upp, jcp.low)
conf.jcp

shin.upp <- pos.by.pty.1993.3[pos.by.pty.1993.3$pty==6,]$mean.pos + (1.96*pos.by.pty.1993.3[pos.by.pty.1993.3$pty==6,]$se.pos)
shin.low <- pos.by.pty.1993.3[pos.by.pty.1993.3$pty==6,]$mean.pos - (1.96*pos.by.pty.1993.3[pos.by.pty.1993.3$pty==6,]$se.pos)

conf.shin <- c(shin.upp, shin.low)
conf.shin

saki.upp <- pos.by.pty.1993.3[pos.by.pty.1993.3$pty==7,]$mean.pos + (1.96*pos.by.pty.1993.3[pos.by.pty.1993.3$pty==7,]$se.pos)
saki.low <- pos.by.pty.1993.3[pos.by.pty.1993.3$pty==7,]$mean.pos - (1.96*pos.by.pty.1993.3[pos.by.pty.1993.3$pty==7,]$se.pos)

conf.saki <- c(saki.upp, saki.low)
conf.saki

jnp.upp <- pos.by.pty.1993.3[pos.by.pty.1993.3$pty==9,]$mean.pos + (1.96*pos.by.pty.1993.3[pos.by.pty.1993.3$pty==9,]$se.pos)
jnp.low <- pos.by.pty.1993.3[pos.by.pty.1993.3$pty==9,]$mean.pos - (1.96*pos.by.pty.1993.3[pos.by.pty.1993.3$pty==9,]$se.pos)

conf.jnp <- c(jnp.upp, jnp.low)
conf.jnp

lines(x=c(ldp.upp, ldp.low), y=c(8,8), lwd=2)
lines(x=c(saki.upp, saki.low), y=c(7,7), lwd=2)
lines(x=c(jnp.upp, jnp.low), y=c(6,6), lwd=2)
lines(x=c(shin.upp, shin.low), y=c(5,5), lwd=2)
lines(x=c(dsp.upp, dsp.low), y=c(4,4), lwd=2)
lines(x=c(kom.upp, kom.low), y=c(3,3), lwd=2)
lines(x=c(jsp.upp, jsp.low), y=c(2,2), lwd=2)
lines(x=c(jcp.upp, jcp.low), y=c(1,1), lwd=2)

ideal.1993.only <- ideal[ideal$year==1993 & (ideal$pty==1|
                                                             ideal$pty==2|
                                                             ideal$pty==3|
                                                             ideal$pty==4|
                                                             ideal$pty==5|
                                                             ideal$pty==6|
                                                             ideal$pty==7|
                                                             ideal$pty==9)
                                ,]

dim(ideal.1993.only) 

# 1996

pos.by.pty.1996 <- as.data.frame(as.matrix(by(ideal.1996, ideal.1996$pty, function(x) mean(x[,5]))))
se <- function(x) sqrt(var(x)/length(x))
se.by.pty.1996 <- by(ideal.1996, ideal.1996$pty, function(x) se(x[,5]))

pos.by.pty.1996.2 <- cbind(as.vector(pos.by.pty.1996), as.vector(se.by.pty.1996), rownames(pos.by.pty.1996)) ## attachs rownames on as another column.
colnames(pos.by.pty.1996.2) <- c("mean.pos", "se.pos", "pty")
pos.by.pty.1996.2
pos.by.pty.1996.3 <- pos.by.pty.1996.2[order(pos.by.pty.1996.2$mean.pos),]
pos.by.pty.1996.3

pos.by.pty.1996.3$ptyname <- rep(NA, nrow(pos.by.pty.1996))

pos.by.pty.1996.3[pos.by.pty.1996.3$pty==1,]$ptyname <- "LDP"
pos.by.pty.1996.3[pos.by.pty.1996.3$pty==5,]$ptyname <- "JCP"
pos.by.pty.1996.3[pos.by.pty.1996.3$pty==7,]$ptyname <- "Sakigake"
pos.by.pty.1996.3[pos.by.pty.1996.3$pty==52,]$ptyname <- "DPJ"
pos.by.pty.1996.3[pos.by.pty.1996.3$pty==54,]$ptyname <- "NFP"
pos.by.pty.1996.3[pos.by.pty.1996.3$pty==58,]$ptyname <- "SDP"
pos.by.pty.1996.3[pos.by.pty.1996.3$pty==71,]$ptyname <- "Lib Alliance"
pos.by.pty.1996.3[pos.by.pty.1996.3$pty==72,]$ptyname <- "NSP"

pos.by.pty.1996.3

dotchart(pos.by.pty.1996.3[pos.by.pty.1996.3$pty==1|
                             pos.by.pty.1996.3$pty==5|
                             pos.by.pty.1996.3$pty==7|
                             pos.by.pty.1996.3$pty==52|
                             pos.by.pty.1996.3$pty==54|
                             pos.by.pty.1996.3$pty==58|
                             pos.by.pty.1996.3$pty==71|
                             pos.by.pty.1996.3$pty==72,]$mean.pos, 
         labels=pos.by.pty.1996.3[pos.by.pty.1996.3$pty==1|
                                    pos.by.pty.1996.3$pty==5|
                                    pos.by.pty.1996.3$pty==7|
                                    pos.by.pty.1996.3$pty==52|
                                    pos.by.pty.1996.3$pty==54|
                                    pos.by.pty.1996.3$pty==58|
                                    pos.by.pty.1996.3$pty==71|
                                    pos.by.pty.1996.3$pty==72,]$ptyname, 
         pch=20,
         xlab="1996 Party Positions (n=1,073)", xlim=c(-2, 1.3), cex=1)

ldp.upp <- pos.by.pty.1996.3[pos.by.pty.1996.3$pty==1,]$mean.pos + (1.96*pos.by.pty.1996.3[pos.by.pty.1996.3$pty==1,]$se.pos)
ldp.low <- pos.by.pty.1996.3[pos.by.pty.1996.3$pty==1,]$mean.pos - (1.96*pos.by.pty.1996.3[pos.by.pty.1996.3$pty==1,]$se.pos)

conf.ldp <- c(ldp.upp, ldp.low)
conf.ldp

jcp.upp <- pos.by.pty.1996.3[pos.by.pty.1996.3$pty==5,]$mean.pos + (1.96*pos.by.pty.1996.3[pos.by.pty.1996.3$pty==5,]$se.pos)
jcp.low <- pos.by.pty.1996.3[pos.by.pty.1996.3$pty==5,]$mean.pos - (1.96*pos.by.pty.1996.3[pos.by.pty.1996.3$pty==5,]$se.pos)

conf.jcp <- c(jcp.upp, jcp.low)
conf.jcp

saki.upp <- pos.by.pty.1996.3[pos.by.pty.1996.3$pty==7,]$mean.pos + (1.96*pos.by.pty.1996.3[pos.by.pty.1996.3$pty==7,]$se.pos)
saki.low <- pos.by.pty.1996.3[pos.by.pty.1996.3$pty==7,]$mean.pos - (1.96*pos.by.pty.1996.3[pos.by.pty.1996.3$pty==7,]$se.pos)

conf.saki <- c(saki.upp, saki.low)
conf.saki

dpj.upp <- pos.by.pty.1996.3[pos.by.pty.1996.3$pty==52,]$mean.pos + (1.96*pos.by.pty.1996.3[pos.by.pty.1996.3$pty==52,]$se.pos)
dpj.low <- pos.by.pty.1996.3[pos.by.pty.1996.3$pty==52,]$mean.pos - (1.96*pos.by.pty.1996.3[pos.by.pty.1996.3$pty==52,]$se.pos)

conf.dpj <- c(dpj.upp, dpj.low)
conf.dpj

nfp.upp <- pos.by.pty.1996.3[pos.by.pty.1996.3$pty==54,]$mean.pos + (1.96*pos.by.pty.1996.3[pos.by.pty.1996.3$pty==54,]$se.pos)
nfp.low <- pos.by.pty.1996.3[pos.by.pty.1996.3$pty==54,]$mean.pos - (1.96*pos.by.pty.1996.3[pos.by.pty.1996.3$pty==54,]$se.pos)

conf.nfp <- c(nfp.upp, nfp.low)
conf.nfp

sdp.upp <- pos.by.pty.1996.3[pos.by.pty.1996.3$pty==58,]$mean.pos + (1.96*pos.by.pty.1996.3[pos.by.pty.1996.3$pty==58,]$se.pos)
sdp.low <- pos.by.pty.1996.3[pos.by.pty.1996.3$pty==58,]$mean.pos - (1.96*pos.by.pty.1996.3[pos.by.pty.1996.3$pty==58,]$se.pos)

conf.sdp <- c(sdp.upp, sdp.low)
conf.sdp

liba.upp <- pos.by.pty.1996.3[pos.by.pty.1996.3$pty==71,]$mean.pos + (1.96*pos.by.pty.1996.3[pos.by.pty.1996.3$pty==71,]$se.pos)
liba.low <- pos.by.pty.1996.3[pos.by.pty.1996.3$pty==71,]$mean.pos - (1.96*pos.by.pty.1996.3[pos.by.pty.1996.3$pty==71,]$se.pos)

conf.liba <- c(liba.upp, liba.low)
conf.liba

nsp.upp <- pos.by.pty.1996.3[pos.by.pty.1996.3$pty==72,]$mean.pos + (1.96*pos.by.pty.1996.3[pos.by.pty.1996.3$pty==72,]$se.pos)
nsp.low <- pos.by.pty.1996.3[pos.by.pty.1996.3$pty==72,]$mean.pos - (1.96*pos.by.pty.1996.3[pos.by.pty.1996.3$pty==72,]$se.pos)

conf.nsp <- c(nsp.upp, nsp.low)
conf.nsp
lines(x=c(ldp.upp, ldp.low), y=c(8,8), lwd=2)
lines(x=c(saki.upp, saki.low), y=c(7,7), lwd=2)
lines(x=c(liba.upp, liba.low), y=c(6,6), lwd=2)
lines(x=c(nfp.upp, nfp.low), y=c(5,5), lwd=2)
lines(x=c(dpj.upp, dpj.low), y=c(4,4), lwd=2)
lines(x=c(sdp.upp, sdp.low), y=c(3,3), lwd=2)
lines(x=c(nsp.upp, nsp.low), y=c(2,2), lwd=2)
lines(x=c(jcp.upp, jcp.low), y=c(1,1), lwd=2)

ideal.1996.only <- ideal[ideal$year==1996 & (ideal$pty==1|
                                                             ideal$pty==5|
                                                             ideal$pty==7|
                                                             ideal$pty==52|
                                                             ideal$pty==54|
                                                             ideal$pty==58|
                                                             ideal$pty==71|
                                                             ideal$pty==72)
                                ,]

dim(ideal.1996.only) 

# 2000
pos.by.pty.2000 <- as.data.frame(as.matrix(by(ideal.2000, ideal.2000$pty, function(x) mean(x[,5]))))
se <- function(x) sqrt(var(x)/length(x))
se.by.pty.2000 <- by(ideal.2000, ideal.2000$pty, function(x) se(x[,5]))

pos.by.pty.2000.2 <- cbind(as.vector(pos.by.pty.2000), as.vector(se.by.pty.2000), rownames(pos.by.pty.2000)) ## attachs rownames on as another column.
colnames(pos.by.pty.2000.2) <- c("mean.pos", "se.pos", "pty")
pos.by.pty.2000.2
pos.by.pty.2000.3 <- pos.by.pty.2000.2[order(pos.by.pty.2000.2$mean.pos),]
pos.by.pty.2000.3

pos.by.pty.2000.3$ptyname <- rep(NA, nrow(pos.by.pty.2000))

pos.by.pty.2000.3[pos.by.pty.2000.3$pty==1,]$ptyname <- "LDP"
pos.by.pty.2000.3[pos.by.pty.2000.3$pty==3,]$ptyname <- "Komeito"
pos.by.pty.2000.3[pos.by.pty.2000.3$pty==5,]$ptyname <- "JCP"
pos.by.pty.2000.3[pos.by.pty.2000.3$pty==52,]$ptyname <- "DPJ"
pos.by.pty.2000.3[pos.by.pty.2000.3$pty==57,]$ptyname <- "Liberals"
pos.by.pty.2000.3[pos.by.pty.2000.3$pty==58,]$ptyname <- "SDP"
pos.by.pty.2000.3[pos.by.pty.2000.3$pty==71,]$ptyname <- "Lib Alliance"
pos.by.pty.2000.3[pos.by.pty.2000.3$pty==81,]$ptyname <- "Conservatives"

pos.by.pty.2000.3

dotchart(pos.by.pty.2000.3[pos.by.pty.2000.3$pty==1|
                             pos.by.pty.2000.3$pty==3|
                             pos.by.pty.2000.3$pty==5|
                             pos.by.pty.2000.3$pty==52|
                             pos.by.pty.2000.3$pty==57|
                             pos.by.pty.2000.3$pty==58|
                             pos.by.pty.2000.3$pty==71|
                             pos.by.pty.2000.3$pty==81,]$mean.pos, 
         labels=pos.by.pty.2000.3[pos.by.pty.2000.3$pty==1|
                                    pos.by.pty.2000.3$pty==3|
                                    pos.by.pty.2000.3$pty==5|
                                    pos.by.pty.2000.3$pty==52|
                                    pos.by.pty.2000.3$pty==57|
                                    pos.by.pty.2000.3$pty==58|
                                    pos.by.pty.2000.3$pty==71|
                                    pos.by.pty.2000.3$pty==81,]$ptyname, 
         pch=20,
         xlab="2000 Party Positions (n=1,004)", xlim=c(-2, 1.2), cex=1)

ldp.upp <- pos.by.pty.2000.3[pos.by.pty.2000.3$pty==1,]$mean.pos + (1.96*pos.by.pty.2000.3[pos.by.pty.2000.3$pty==1,]$se.pos)
ldp.low <- pos.by.pty.2000.3[pos.by.pty.2000.3$pty==1,]$mean.pos - (1.96*pos.by.pty.2000.3[pos.by.pty.2000.3$pty==1,]$se.pos)

conf.ldp <- c(ldp.upp, ldp.low)
conf.ldp

kom.upp <- pos.by.pty.2000.3[pos.by.pty.2000.3$pty==3,]$mean.pos + (1.96*pos.by.pty.2000.3[pos.by.pty.2000.3$pty==3,]$se.pos)
kom.low <- pos.by.pty.2000.3[pos.by.pty.2000.3$pty==3,]$mean.pos - (1.96*pos.by.pty.2000.3[pos.by.pty.2000.3$pty==3,]$se.pos)

conf.kom <- c(kom.upp, kom.low)
conf.kom

jcp.upp <- pos.by.pty.2000.3[pos.by.pty.2000.3$pty==5,]$mean.pos + (1.96*pos.by.pty.2000.3[pos.by.pty.2000.3$pty==5,]$se.pos)
jcp.low <- pos.by.pty.2000.3[pos.by.pty.2000.3$pty==5,]$mean.pos - (1.96*pos.by.pty.2000.3[pos.by.pty.2000.3$pty==5,]$se.pos)

conf.jcp <- c(jcp.upp, jcp.low)
conf.jcp

dpj.upp <- pos.by.pty.2000.3[pos.by.pty.2000.3$pty==52,]$mean.pos + (1.96*pos.by.pty.2000.3[pos.by.pty.2000.3$pty==52,]$se.pos)
dpj.low <- pos.by.pty.2000.3[pos.by.pty.2000.3$pty==52,]$mean.pos - (1.96*pos.by.pty.2000.3[pos.by.pty.2000.3$pty==52,]$se.pos)

conf.dpj <- c(dpj.upp, dpj.low)
conf.dpj

libe.upp <- pos.by.pty.2000.3[pos.by.pty.2000.3$pty==57,]$mean.pos + (1.96*pos.by.pty.2000.3[pos.by.pty.2000.3$pty==57,]$se.pos)
libe.low <- pos.by.pty.2000.3[pos.by.pty.2000.3$pty==57,]$mean.pos - (1.96*pos.by.pty.2000.3[pos.by.pty.2000.3$pty==57,]$se.pos)

conf.libe <- c(libe.upp, libe.low)
conf.libe

sdp.upp <- pos.by.pty.2000.3[pos.by.pty.2000.3$pty==58,]$mean.pos + (1.96*pos.by.pty.2000.3[pos.by.pty.2000.3$pty==58,]$se.pos)
sdp.low <- pos.by.pty.2000.3[pos.by.pty.2000.3$pty==58,]$mean.pos - (1.96*pos.by.pty.2000.3[pos.by.pty.2000.3$pty==58,]$se.pos)

conf.sdp <- c(sdp.upp, sdp.low)
conf.sdp

liba.upp <- pos.by.pty.2000.3[pos.by.pty.2000.3$pty==71,]$mean.pos + (1.96*pos.by.pty.2000.3[pos.by.pty.2000.3$pty==71,]$se.pos)
liba.low <- pos.by.pty.2000.3[pos.by.pty.2000.3$pty==71,]$mean.pos - (1.96*pos.by.pty.2000.3[pos.by.pty.2000.3$pty==71,]$se.pos)

conf.liba <- c(liba.upp, liba.low)
conf.liba

cons.upp <- pos.by.pty.2000.3[pos.by.pty.2000.3$pty==81,]$mean.pos + (1.96*pos.by.pty.2000.3[pos.by.pty.2000.3$pty==81,]$se.pos)
cons.low <- pos.by.pty.2000.3[pos.by.pty.2000.3$pty==81,]$mean.pos - (1.96*pos.by.pty.2000.3[pos.by.pty.2000.3$pty==81,]$se.pos)

conf.cons <- c(cons.upp, cons.low)
conf.cons

### need to put these on at the end, because it is already sorted in terms of left and right.
lines(x=c(ldp.upp, ldp.low), y=c(8,8), lwd=2)
lines(x=c(kom.upp, kom.low), y=c(7,7), lwd=2)
lines(x=c(libe.upp, libe.low), y=c(6,6), lwd=2)
lines(x=c(cons.upp, cons.low), y=c(5,5), lwd=2)
lines(x=c(dpj.upp, dpj.low), y=c(4,4), lwd=2)
lines(x=c(liba.upp, liba.low), y=c(3,3), lwd=2)
lines(x=c(sdp.upp, sdp.low), y=c(2,2), lwd=2)
lines(x=c(jcp.upp, jcp.low), y=c(1,1), lwd=2)

ideal.2000.only <- ideal[ideal$year==2000 & (ideal$pty==1|
                                                             ideal$pty==3|
                                                             ideal$pty==5|
                                                             ideal$pty==52|
                                                             ideal$pty==57|
                                                             ideal$pty==58|
                                                             ideal$pty==71|
                                                             ideal$pty==81)
                                ,]

dim(ideal.2000.only) 

# 2003

pos.by.pty.2003 <- as.data.frame(as.matrix(by(ideal.2003, ideal.2003$pty, function(x) mean(x[,5]))))
se <- function(x) sqrt(var(x)/length(x))
se.by.pty.2003 <- by(ideal.2003, ideal.2003$pty, function(x) se(x[,5]))

pos.by.pty.2003.2 <- cbind(as.vector(pos.by.pty.2003), as.vector(se.by.pty.2003), rownames(pos.by.pty.2003)) ## attachs rownames on as another column.
colnames(pos.by.pty.2003.2) <- c("mean.pos", "se.pos", "pty")
pos.by.pty.2003.2
pos.by.pty.2003.3 <- pos.by.pty.2003.2[order(pos.by.pty.2003.2$mean.pos),]
pos.by.pty.2003.3

pos.by.pty.2003.3$ptyname <- rep(NA, nrow(pos.by.pty.2003))
pos.by.pty.2003.3[pos.by.pty.2003.3$pty==1,]$ptyname <- "LDP"
pos.by.pty.2003.3[pos.by.pty.2003.3$pty==3,]$ptyname <- "Komeito"
pos.by.pty.2003.3[pos.by.pty.2003.3$pty==5,]$ptyname <- "JCP"
pos.by.pty.2003.3[pos.by.pty.2003.3$pty==52,]$ptyname <- "DPJ"
pos.by.pty.2003.3[pos.by.pty.2003.3$pty==58,]$ptyname <- "SDP"
pos.by.pty.2003.3[pos.by.pty.2003.3$pty==81,]$ptyname <- "Conservatives"

pos.by.pty.2003.3

dotchart(pos.by.pty.2003.3[pos.by.pty.2003.3$pty==1|
                             pos.by.pty.2003.3$pty==3|
                             pos.by.pty.2003.3$pty==5|
                             pos.by.pty.2003.3$pty==52|
                             pos.by.pty.2003.3$pty==58|
                             pos.by.pty.2003.3$pty==81,]$mean.pos, 
         labels=pos.by.pty.2003.3[pos.by.pty.2003.3$pty==1|
                                    pos.by.pty.2003.3$pty==3|
                                    pos.by.pty.2003.3$pty==5|
                                    pos.by.pty.2003.3$pty==52|
                                    pos.by.pty.2003.3$pty==58|
                                    pos.by.pty.2003.3$pty==81,]$ptyname, 
         pch=20,
         xlab="2003 Party Positions (n=927)",xlim=c(-2, 1.3),  cex=1)

ldp.upp <- pos.by.pty.2003.3[pos.by.pty.2003.3$pty==1,]$mean.pos + (1.96*pos.by.pty.2003.3[pos.by.pty.2003.3$pty==1,]$se.pos)
ldp.low <- pos.by.pty.2003.3[pos.by.pty.2003.3$pty==1,]$mean.pos - (1.96*pos.by.pty.2003.3[pos.by.pty.2003.3$pty==1,]$se.pos)

conf.ldp <- c(ldp.upp, ldp.low)
conf.ldp

kom.upp <- pos.by.pty.2003.3[pos.by.pty.2003.3$pty==3,]$mean.pos + (1.96*pos.by.pty.2003.3[pos.by.pty.2003.3$pty==3,]$se.pos)
kom.low <- pos.by.pty.2003.3[pos.by.pty.2003.3$pty==3,]$mean.pos - (1.96*pos.by.pty.2003.3[pos.by.pty.2003.3$pty==3,]$se.pos)

conf.kom <- c(kom.upp, kom.low)
conf.kom

jcp.upp <- pos.by.pty.2003.3[pos.by.pty.2003.3$pty==5,]$mean.pos + (1.96*pos.by.pty.2003.3[pos.by.pty.2003.3$pty==5,]$se.pos)
jcp.low <- pos.by.pty.2003.3[pos.by.pty.2003.3$pty==5,]$mean.pos - (1.96*pos.by.pty.2003.3[pos.by.pty.2003.3$pty==5,]$se.pos)

conf.jcp <- c(jcp.upp, jcp.low)
conf.jcp

dpj.upp <- pos.by.pty.2003.3[pos.by.pty.2003.3$pty==52,]$mean.pos + (1.96*pos.by.pty.2003.3[pos.by.pty.2003.3$pty==52,]$se.pos)
dpj.low <- pos.by.pty.2003.3[pos.by.pty.2003.3$pty==52,]$mean.pos - (1.96*pos.by.pty.2003.3[pos.by.pty.2003.3$pty==52,]$se.pos)

conf.dpj <- c(dpj.upp, dpj.low)
conf.dpj

sdp.upp <- pos.by.pty.2003.3[pos.by.pty.2003.3$pty==58,]$mean.pos + (1.96*pos.by.pty.2003.3[pos.by.pty.2003.3$pty==58,]$se.pos)
sdp.low <- pos.by.pty.2003.3[pos.by.pty.2003.3$pty==58,]$mean.pos - (1.96*pos.by.pty.2003.3[pos.by.pty.2003.3$pty==58,]$se.pos)

conf.sdp <- c(sdp.upp, sdp.low)
conf.sdp

cons.upp <- pos.by.pty.2003.3[pos.by.pty.2003.3$pty==81,]$mean.pos + (1.96*pos.by.pty.2003.3[pos.by.pty.2003.3$pty==81,]$se.pos)
cons.low <- pos.by.pty.2003.3[pos.by.pty.2003.3$pty==81,]$mean.pos - (1.96*pos.by.pty.2003.3[pos.by.pty.2003.3$pty==81,]$se.pos)

conf.cons <- c(cons.upp, cons.low)
conf.cons

lines(x=c(ldp.upp, ldp.low), y=c(6,6), lwd=2)
lines(x=c(cons.upp, cons.low), y=c(5,5), lwd=2)
lines(x=c(kom.upp, kom.low), y=c(4,4), lwd=2)
lines(x=c(dpj.upp, dpj.low), y=c(3,3), lwd=2)
lines(x=c(sdp.upp, sdp.low), y=c(2,2), lwd=2)
lines(x=c(jcp.upp, jcp.low), y=c(1,1), lwd=2)

ideal.2003.only <- ideal[ideal$year==2003 & (ideal$pty==1|
                                                             ideal$pty==3|
                                                             ideal$pty==5|
                                                             ideal$pty==52|
                                                             ideal$pty==58|
                                                             ideal$pty==81)
                                ,]

dim(ideal.2003.only)

# 2005
pos.by.pty.2005 <- as.data.frame(as.matrix(by(ideal.2005, ideal.2005$pty, function(x) mean(x[,5]))))
se <- function(x) sqrt(var(x)/length(x))
se.by.pty.2005 <- by(ideal.2005, ideal.2005$pty, function(x) se(x[,5]))

pos.by.pty.2005.2 <- cbind(as.vector(pos.by.pty.2005), as.vector(se.by.pty.2005), rownames(pos.by.pty.2005)) ## attachs rownames on as another column.
colnames(pos.by.pty.2005.2) <- c("mean.pos", "se.pos", "pty")
pos.by.pty.2005.2
pos.by.pty.2005.3 <- pos.by.pty.2005.2[order(pos.by.pty.2005.2$mean.pos),]
pos.by.pty.2005.3

pos.by.pty.2005.3$ptyname <- rep(NA, nrow(pos.by.pty.2005))

pos.by.pty.2005.3[pos.by.pty.2005.3$pty==1,]$ptyname <- "LDP"
pos.by.pty.2005.3[pos.by.pty.2005.3$pty==3,]$ptyname <- "Komeito"
pos.by.pty.2005.3[pos.by.pty.2005.3$pty==5,]$ptyname <- "JCP"
pos.by.pty.2005.3[pos.by.pty.2005.3$pty==52,]$ptyname <- "DPJ"
pos.by.pty.2005.3[pos.by.pty.2005.3$pty==58,]$ptyname <- "SDP"
pos.by.pty.2005.3[pos.by.pty.2005.3$pty==91,]$ptyname <- "PNP"
pos.by.pty.2005.3[pos.by.pty.2005.3$pty==92,]$ptyname <- "NNP"

pos.by.pty.2005.3

dotchart(pos.by.pty.2005.3[pos.by.pty.2005.3$pty==1|
                             pos.by.pty.2005.3$pty==3|
                             pos.by.pty.2005.3$pty==5|
                             pos.by.pty.2005.3$pty==52|
                             pos.by.pty.2005.3$pty==58|
                             pos.by.pty.2005.3$pty==91|
                             pos.by.pty.2005.3$pty==92,]$mean.pos, 
         labels=pos.by.pty.2005.3[pos.by.pty.2005.3$pty==1|
                                    pos.by.pty.2005.3$pty==3|
                                    pos.by.pty.2005.3$pty==5|
                                    pos.by.pty.2005.3$pty==52|
                                    pos.by.pty.2005.3$pty==58|
                                    pos.by.pty.2005.3$pty==91|
                                    pos.by.pty.2005.3$pty==92,]$ptyname, 
         pch=20,
         xlab="2005 Party Positions (n=917)", xlim=c(-2.2, 2), cex=1)

ldp.upp <- pos.by.pty.2005.3[pos.by.pty.2005.3$pty==1,]$mean.pos + (1.96*pos.by.pty.2005.3[pos.by.pty.2005.3$pty==1,]$se.pos)
ldp.low <- pos.by.pty.2005.3[pos.by.pty.2005.3$pty==1,]$mean.pos - (1.96*pos.by.pty.2005.3[pos.by.pty.2005.3$pty==1,]$se.pos)

conf.ldp <- c(ldp.upp, ldp.low)
conf.ldp

kom.upp <- pos.by.pty.2005.3[pos.by.pty.2005.3$pty==3,]$mean.pos + (1.96*pos.by.pty.2005.3[pos.by.pty.2005.3$pty==3,]$se.pos)
kom.low <- pos.by.pty.2005.3[pos.by.pty.2005.3$pty==3,]$mean.pos - (1.96*pos.by.pty.2005.3[pos.by.pty.2005.3$pty==3,]$se.pos)

conf.kom <- c(kom.upp, kom.low)
conf.kom

jcp.upp <- pos.by.pty.2005.3[pos.by.pty.2005.3$pty==5,]$mean.pos + (1.96*pos.by.pty.2005.3[pos.by.pty.2005.3$pty==5,]$se.pos)
jcp.low <- pos.by.pty.2005.3[pos.by.pty.2005.3$pty==5,]$mean.pos - (1.96*pos.by.pty.2005.3[pos.by.pty.2005.3$pty==5,]$se.pos)

conf.jcp <- c(jcp.upp, jcp.low)
conf.jcp

dpj.upp <- pos.by.pty.2005.3[pos.by.pty.2005.3$pty==52,]$mean.pos + (1.96*pos.by.pty.2005.3[pos.by.pty.2005.3$pty==52,]$se.pos)
dpj.low <- pos.by.pty.2005.3[pos.by.pty.2005.3$pty==52,]$mean.pos - (1.96*pos.by.pty.2005.3[pos.by.pty.2005.3$pty==52,]$se.pos)

conf.dpj <- c(dpj.upp, dpj.low)
conf.dpj

sdp.upp <- pos.by.pty.2005.3[pos.by.pty.2005.3$pty==58,]$mean.pos + (1.96*pos.by.pty.2005.3[pos.by.pty.2005.3$pty==58,]$se.pos)
sdp.low <- pos.by.pty.2005.3[pos.by.pty.2005.3$pty==58,]$mean.pos - (1.96*pos.by.pty.2005.3[pos.by.pty.2005.3$pty==58,]$se.pos)

conf.sdp <- c(sdp.upp, sdp.low)
conf.sdp

pnp.upp <- pos.by.pty.2005.3[pos.by.pty.2005.3$pty==91,]$mean.pos + (1.96*pos.by.pty.2005.3[pos.by.pty.2005.3$pty==91,]$se.pos)
pnp.low <- pos.by.pty.2005.3[pos.by.pty.2005.3$pty==91,]$mean.pos - (1.96*pos.by.pty.2005.3[pos.by.pty.2005.3$pty==91,]$se.pos)

conf.pnp <- c(pnp.upp, pnp.low)
conf.pnp

nnp.upp <- pos.by.pty.2005.3[pos.by.pty.2005.3$pty==92,]$mean.pos + (1.96*pos.by.pty.2005.3[pos.by.pty.2005.3$pty==92,]$se.pos)
nnp.low <- pos.by.pty.2005.3[pos.by.pty.2005.3$pty==92,]$mean.pos - (1.96*pos.by.pty.2005.3[pos.by.pty.2005.3$pty==92,]$se.pos)

conf.nnp <- c(nnp.upp, nnp.low)
conf.nnp

lines(x=c(nnp.upp, nnp.low), y=c(7,7), lwd=2)
lines(x=c(kom.upp, kom.low), y=c(6,6), lwd=2)
lines(x=c(ldp.upp, ldp.low), y=c(5,5), lwd=2)
lines(x=c(pnp.upp, pnp.low), y=c(4,4), lwd=2)
lines(x=c(dpj.upp, dpj.low), y=c(3,3), lwd=2)
lines(x=c(sdp.upp, sdp.low), y=c(2,2), lwd=2)
lines(x=c(jcp.upp, jcp.low), y=c(1,1), lwd=2)


ideal.2005.only <- ideal[ideal$year==2005 & (ideal$pty==1|
                                                             ideal$pty==3|
                                                             ideal$pty==5|
                                                             ideal$pty==52|
                                                             ideal$pty==58|
                                                             ideal$pty==91|
                                                             ideal$pty==92)
                                ,]

dim(ideal.2005.only) 


# 2009

pos.by.pty.2009 <- as.data.frame(as.matrix(by(ideal.2009, ideal.2009$pty, function(x) mean(x[,5]))))
se <- function(x) sqrt(var(x)/length(x))
se.by.pty.2009 <- by(ideal.2009, ideal.2009$pty, function(x) se(x[,5]))

pos.by.pty.2009.2 <- cbind(as.vector(pos.by.pty.2009), as.vector(se.by.pty.2009), rownames(pos.by.pty.2009)) ## attachs rownames on as another column.
colnames(pos.by.pty.2009.2) <- c("mean.pos", "se.pos", "pty")
pos.by.pty.2009.2
pos.by.pty.2009.3 <- pos.by.pty.2009.2[order(pos.by.pty.2009.2$mean.pos),]
pos.by.pty.2009.3

pos.by.pty.2009.3$ptyname <- rep(NA, nrow(pos.by.pty.2009))

pos.by.pty.2009.3[pos.by.pty.2009.3$pty==1,]$ptyname <- "LDP"
pos.by.pty.2009.3[pos.by.pty.2009.3$pty==3,]$ptyname <- "Komeito"
pos.by.pty.2009.3[pos.by.pty.2009.3$pty==5,]$ptyname <- "JCP"
pos.by.pty.2009.3[pos.by.pty.2009.3$pty==52,]$ptyname <- "DPJ"
pos.by.pty.2009.3[pos.by.pty.2009.3$pty==58,]$ptyname <- "SDP"
pos.by.pty.2009.3[pos.by.pty.2009.3$pty==91,]$ptyname <- "PNP"
pos.by.pty.2009.3[pos.by.pty.2009.3$pty==95,]$ptyname <- "YP"

pos.by.pty.2009.3

dotchart(pos.by.pty.2009.3[pos.by.pty.2009.3$pty==1|
                             pos.by.pty.2009.3$pty==3|
                             pos.by.pty.2009.3$pty==5|
                             pos.by.pty.2009.3$pty==52|
                             pos.by.pty.2009.3$pty==58|
                             pos.by.pty.2009.3$pty==91|
                             pos.by.pty.2009.3$pty==95,]$mean.pos, 
         labels=pos.by.pty.2009.3[pos.by.pty.2009.3$pty==1|
                                    pos.by.pty.2009.3$pty==3|
                                    pos.by.pty.2009.3$pty==5|
                                    pos.by.pty.2009.3$pty==52|
                                    pos.by.pty.2009.3$pty==58|
                                    pos.by.pty.2009.3$pty==91|
                                    pos.by.pty.2009.3$pty==95,]$ptyname, 
         pch=20,
         xlab="2009 Party Positions (n=774)", xlim=c(-2.1, 1.2),  cex=1)

ldp.upp <- pos.by.pty.2009.3[pos.by.pty.2009.3$pty==1,]$mean.pos + (1.96*pos.by.pty.2009.3[pos.by.pty.2009.3$pty==1,]$se.pos)
ldp.low <- pos.by.pty.2009.3[pos.by.pty.2009.3$pty==1,]$mean.pos - (1.96*pos.by.pty.2009.3[pos.by.pty.2009.3$pty==1,]$se.pos)

conf.ldp <- c(ldp.upp, ldp.low)
conf.ldp

kom.upp <- pos.by.pty.2009.3[pos.by.pty.2009.3$pty==3,]$mean.pos + (1.96*pos.by.pty.2009.3[pos.by.pty.2009.3$pty==3,]$se.pos)
kom.low <- pos.by.pty.2009.3[pos.by.pty.2009.3$pty==3,]$mean.pos - (1.96*pos.by.pty.2009.3[pos.by.pty.2009.3$pty==3,]$se.pos)

conf.kom <- c(kom.upp, kom.low)
conf.kom

jcp.upp <- pos.by.pty.2009.3[pos.by.pty.2009.3$pty==5,]$mean.pos + (1.96*pos.by.pty.2009.3[pos.by.pty.2009.3$pty==5,]$se.pos)
jcp.low <- pos.by.pty.2009.3[pos.by.pty.2009.3$pty==5,]$mean.pos - (1.96*pos.by.pty.2009.3[pos.by.pty.2009.3$pty==5,]$se.pos)

conf.jcp <- c(jcp.upp, jcp.low)
conf.jcp

dpj.upp <- pos.by.pty.2009.3[pos.by.pty.2009.3$pty==52,]$mean.pos + (1.96*pos.by.pty.2009.3[pos.by.pty.2009.3$pty==52,]$se.pos)
dpj.low <- pos.by.pty.2009.3[pos.by.pty.2009.3$pty==52,]$mean.pos - (1.96*pos.by.pty.2009.3[pos.by.pty.2009.3$pty==52,]$se.pos)

conf.dpj <- c(dpj.upp, dpj.low)
conf.dpj

sdp.upp <- pos.by.pty.2009.3[pos.by.pty.2009.3$pty==58,]$mean.pos + (1.96*pos.by.pty.2009.3[pos.by.pty.2009.3$pty==58,]$se.pos)
sdp.low <- pos.by.pty.2009.3[pos.by.pty.2009.3$pty==58,]$mean.pos - (1.96*pos.by.pty.2009.3[pos.by.pty.2009.3$pty==58,]$se.pos)

conf.sdp <- c(sdp.upp, sdp.low)
conf.sdp

pnp.upp <- pos.by.pty.2009.3[pos.by.pty.2009.3$pty==91,]$mean.pos + (1.96*pos.by.pty.2009.3[pos.by.pty.2009.3$pty==91,]$se.pos)
pnp.low <- pos.by.pty.2009.3[pos.by.pty.2009.3$pty==91,]$mean.pos - (1.96*pos.by.pty.2009.3[pos.by.pty.2009.3$pty==91,]$se.pos)

conf.pnp <- c(pnp.upp, pnp.low)
conf.pnp

yp.upp <- pos.by.pty.2009.3[pos.by.pty.2009.3$pty==95,]$mean.pos + (1.96*pos.by.pty.2009.3[pos.by.pty.2009.3$pty==95,]$se.pos)
yp.low <- pos.by.pty.2009.3[pos.by.pty.2009.3$pty==95,]$mean.pos - (1.96*pos.by.pty.2009.3[pos.by.pty.2009.3$pty==95,]$se.pos)

conf.yp <- c(yp.upp, yp.low)
conf.yp

lines(x=c(ldp.upp, ldp.low), y=c(7,7), lwd=2)
lines(x=c(kom.upp, kom.low), y=c(6,6), lwd=2)
lines(x=c(yp.upp, yp.low), y=c(5,5), lwd=2)
lines(x=c(pnp.upp, pnp.low), y=c(4,4), lwd=2)
lines(x=c(sdp.upp, sdp.low), y=c(3,3), lwd=2)
lines(x=c(dpj.upp, dpj.low), y=c(2,2), lwd=2)
lines(x=c(jcp.upp, jcp.low), y=c(1,1), lwd=2)

ideal.2009.only <- ideal[ideal$year==2009 & (ideal$pty==1|
                                                             ideal$pty==3|
                                                             ideal$pty==5|
                                                             ideal$pty==52|
                                                             ideal$pty==58|
                                                             ideal$pty==91|
                                                             ideal$pty==95)
                                ,]

dim(ideal.2009.only) 

# In 1986, is NLC mean different from LDP mean?
nlc.86 <- ideal[ideal$pty==6 & ideal$year==1986,]
ldp.86 <- ideal[ideal$pty==1 & ideal$year==1986,]
t.test(nlc.86$sep_theta, ldp.86$sep_theta)

rm(list=ls())







# ==================================
# Validation with Asahi-Todai Seijika Chosa
# (Correlation and Appendix Figure 4)

library(foreign)
library(Hmisc)
library(stats)

load("merged_with_2003ATES.Rdata") # saved as mer.2003.new
# merged file of positions in 2003 with ATES positions in 2003

# According to ATES codebook: valid responses are 1-10,
# so we'll assign "11" and "." to NA:  
mer.2003.new$ideology[which(mer.2003.new$ideology == ".")] <- NA
mer.2003.new$ideology[which(mer.2003.new$ideology == 11)] <- NA
length(na.omit(mer.2003.new$ideology))
rcorr(mer.2003.new$ideology, mer.2003.new$sep_theta, type="pearson")

load("merged_with_2005ATES.Rdata") # saved as mer.2005.new
# merged file of positions in 2005 with ATES positions in 2005
# Assign "." to NA
mer.2005.new$ideology[which(mer.2005.new$ideology == ".")] <- NA
length(na.omit(mer.2005.new$ideology))
rcorr(mer.2005.new$ideology, mer.2005.new$sep_theta, type="pearson")

par(mfrow = c(1, 2), mar = c(4,4,2,1), tcl = -0.25, mgp = c(1.75, 0.6, 0),
    font.main = 1, cex.main = 2)
plot(mer.2003.new$ideology, mer.2003.new$sep_theta, cex.lab = 1.7,
     xlab="Left ---------- Right (ATES, 2003)",
     ylab="Left ---------- Right  (Manifestos, 2003)")
lines(loess.smooth(mer.2003.new$ideology, mer.2003.new$sep_theta), lwd = 3)
text(x=9, y=-1, labels="Pearson's r: 0.81", cex=2, xpd=NA, pos=2, col="black")

plot(mer.2005.new$ideology, mer.2005.new$sep_theta, cex.lab = 1.7,
     xlab="Left ---------- Right (ATES, 2005)",
     ylab="Left ---------- Right  (Manifestos, 2005)")
lines(loess.smooth(mer.2005.new$ideology, mer.2005.new$sep_theta), lwd = 3)
text(x=9, y=-1, labels="Pearson's r: 0.80", cex=2, xpd=NA, pos=2, col="black")


rm(list=ls())
